package com.example.unruly_zhao.mopaide.util;

import android.content.Context;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.PowerManager;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.Log;
import android.view.animation.AnimationSet;

import com.example.unruly_zhao.mopaide.global.GlobalApplication;

import java.util.UUID;

import static com.example.unruly_zhao.mopaide.global.GlobalApplication.context;


public class CommonUtil {

    private AnimationSet anim;

    private static Runnable mRunnable;

    /**
     * 在主线程执行任务
     *
     * @param r
     */
    public static void runOnUIThread(Runnable r) {

        GlobalApplication.mainHandler.post(r);

    }

    /**
     * 在主线程执行任务
     *
     * @param r
     */
    public static void runOnUIThreadDelay(Runnable r, long t) {

        GlobalApplication.mainHandler.postDelayed(r, t);
        mRunnable = r;

    }


    /**
     * 取消延迟任务
     */
    public static void cacleDelay() {
        if (mRunnable != null) {

            GlobalApplication.mainHandler.removeCallbacks(mRunnable);
            Log.e("mRunnable：", "取消mRunnable");
        }
    }

    private static PowerManager pm;

    public static boolean isScreenOn() {

        pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
        boolean screen = pm.isScreenOn();
        return screen;
    }


    /**
     * deviceID的组成为：渠道标志+识别符来源标志+hash后的终端识别符
     * <p/>
     * 渠道标志为：
     * 1，andriod（a）
     * <p/>
     * 识别符来源标志：
     * 1， wifi mac地址（wifi）；
     * 2， IMEI（imei）；
     * 3， 序列号（sn）；
     * 4， id：随机码。若前面的都取不到时，则随机生成一个随机码，需要缓存。
     *
     * @param context
     * @return
     */
    public static String getDeviceId(Context context) {
        StringBuilder deviceId = new StringBuilder();
        // 渠道标志
        deviceId.append("a");
        try {
            //wifi mac地址
            WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
            WifiInfo info = wifi.getConnectionInfo();
            String wifiMac = info.getMacAddress();
            if (!TextUtils.isEmpty(wifiMac) && !wifiMac.equals("02:00:00:00:00:00")) {
                deviceId.append("wifi");
                deviceId.append(wifiMac);
                LogUtil.e("getDeviceId : ", deviceId.toString());
                return deviceId.toString();
            }
            //IMEI（imei）
            TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
            String imei = tm.getDeviceId();
            if (!TextUtils.isEmpty(imei)) {
                deviceId.append("imei");
                deviceId.append(imei);
                LogUtil.e("getDeviceId : ", deviceId.toString());
                return deviceId.toString();
            }
            //序列号（sn）
            String sn = tm.getSimSerialNumber();
            if (!TextUtils.isEmpty(sn)) {
                deviceId.append("sn");
                deviceId.append(sn);
                LogUtil.e("getDeviceId : ", deviceId.toString());
                return deviceId.toString();
            }
            //如果上面都没有， 则生成一个id：随机码
            String uuid = getUUID(context);
            if (!TextUtils.isEmpty(uuid)) {
                deviceId.append("id");
                deviceId.append(uuid);
                LogUtil.e("getDeviceId : ", deviceId.toString());
                return deviceId.toString();
            }
        } catch (Exception e) {
            e.printStackTrace();
            deviceId.append("id").append(getUUID(context));
        }
        LogUtil.e("getDeviceId : ", deviceId.toString());
        return deviceId.toString();
    }


    /**
     * 得到全局唯一UUID
     */
    public static String getUUID(Context context) {

        String uuid = SharedPrefUtil.getString(context, "uuid", "");
        if (TextUtils.isEmpty(uuid)) {
            uuid = UUID.randomUUID().toString();
            SharedPrefUtil.putString(context, "uuid", uuid);
        }

        return uuid;
    }

}
